#region Usings

using System;
using System.Collections;
using Castle.ActiveRecord;
using log4net;
using NHibernate.Type;

#endregion

namespace Karma.Framework.Core.Domain
{
    /// <summary>
    /// Clase base para todos los objetos de dominio de la aplicacion,
    /// es importante que esta condicion se cumpla para poder hacer uso
    /// de las bondades del framework ya que todas o la mayoria de los
    /// servicios proporcionados por este se basan en el tipo DomainObject
    /// </summary>
    [ActiveRecord, JoinedBase]
    public abstract class DomainObject 
    {
        private static readonly ILog LOG = LogManager.GetLogger(typeof(DomainObject));

        /// <summary>
        /// Llave primaria de la entidad, se manejan llaves simples 
        /// autoincrementales, si se requieren un grupo de campos unicos
        /// se maneja un constraint por medio de la propieda Unique en 
        /// conjunto con UniqueKey para agrupar las propiedades pertenecientes
        /// al constraint.
        /// </summary>
        [PrimaryKey]
        public virtual Int64 Id { get; set; }

    }
}